SQlite源码分析

调试的情况

还额外定义了调试专用互斥锁结构体sqlite3_debug_mutex

typedef struct sqlite3_debug_mutex {  //调试专用互斥体
  int id;     /* The mutex type */
  int cnt;    /* Number of entries without a matching leave */
} sqlite3_debug_mutex;

debug调试函数如下,用于assert一些意外情况

编号 函数名 功能
1 static int debugMutexHeld(sqlite3_mutex *pX) debug 下检查是否多个进程处于中间状态
2 static int debugMutexNotheld(sqlite3_mutex *pX) debug 下检查是否多个进程处于中间状态
3 static int debugMutexInit(void) DEBUG时初始和销毁互斥体系统,无意义
4 static int debugMutexEnd(void)
5 static sqlite3_mutex *debugMutexAlloc(int id) 分配互斥锁,返回互斥体指针
6 static void debugMutexFree(sqlite3_mutex *pX) 销毁互斥锁,主要用于检测
7 static void debugMutexEnter(sqlite3_mutex *pX) 忙则返回SQLITE_BUSY 否则分配锁 未定义同一进程取得多种类型锁的情况
8 static int debugMutexTry(sqlite3_mutex *pX)
9 static void debugMutexLeave(sqlite3_mutex *pX) 检查是锁的状态
10 sqlite3_mutex_methods const *sqlite3NoopMutex(void) 定义了sqlite3NoopMutex包含函数指针的结构体
11 sqlite3_mutex_methods const *sqlite3DefaultMutex(void) 返回sqlite3NoopMutex()